La parte "Domande" ha la funzione di aiutare lo studente nell'autovalutazione e nell'individuazione degli argomenti che gli sono poco chiari. Le soluzioni non verranno fornite in classe. Il docente rimane comunque a disposizione per eventuali dubbi. Si fa notare che il modo migliore per le domande che riguardano linee di codice è quello di scrivere un breve programma di prova e compilarlo...
La parte "Esercizi di programmazione" contiene alcuni esercizi che gli studenti sono invitati a svolgere. Le soluzioni di alcuni di essi non verranno pubblicate, in quanto la verifica della loro correttezza può essere effettuata dagli stessi studenti scrivendo brevi moduli cliente.
class MiaEccezione extends Exception { //vuota... }Le seguenti definizioni di metodo contengono alcuni errori. Cosa stampano i metodi una volta corretti?
public static void a1(){ try{ throw new MiaEccezione(); System.out.println("uno"); } catch(MiaEccezione e){ System.out.println("due"); } System.out.println("tre"); } public static void a2() throws MiaEccezione{ try{ System.out.println("uno"); throw new MiaEccezione(); } finally{ System.out.println("due"); } System.out.println("tre"); }
public static void m1(boolean flag){ try{ m2(flag); } catch(MiaEccezione e) { System.out.println("4"); } System.out.println("5"); } public static void m2(boolean flag) throws MiaEccezione { try{ m3(flag); throw new MiaEccezione(); } catch(TuaEccezione e){ System.out.println("2"); } System.out.println("3"); } public static void m3(boolean lancia){ if(lancia) throw new TuaEccezione(); System.out.println("1"); }
m1(true); m2(false);
public static void b() { (new int[2])[3]=5; try{ throw new MiaEccezione(); } catch(Exception e){ System.out.println("Ho catturato una Exception"); } catch(RuntimeException e){ System.out.println("Ho catturato una RuntimeException"); } catch(MiaEccezione e){ System.out.println("Ho catturato una MiaEccezione"); } finally{ System.out.println("Sono nel Finally"); } }Oltre a invertire l'ordine dei blocchi, quale altra correzione occorre fare al codice perché il programma termini correttamente? Cosa stampa?
*Si fa presente che:
I seguenti esercizi chiedono di utilizzare tali classi.
* Si ricorda che si possono passare argomenti ad un programma Java specificandoli sulla linea di comando, e che i valori di tali argomenti vengono rappresentati come stringhe nell'array args[] che costituisce il parametro formale del metodo main(). Si guardi la documentazione della classe String per indicazioni su come convertire una stringa in un carattere (per la gestione dell'operatore).